// 在 main.js 或 api.js 中
import axios from 'axios';
import { ElMessage } from 'element-plus';

// 创建 axios 实例
const service = axios.create({
    baseURL: 'http://localhost:8080',
    timeout: 30000, //后台接口超时时间
    headers: {
        'Content-Type': 'application/json',
        'Accept': 'application/json'
    }
})

// 请求拦截器
service.interceptors.request.use(
    config => {
        // 从 localStorage 获取 token
        const token = localStorage.getItem('root_token');
        if (token) {
            // 设置请求头
            config.headers['Authorization'] = `Bearer ${token}`;
        }
        return config;
    },
    error => {
        console.error('请求错误:', error);
        ElMessage.error('请求发送失败，请检查网络连接');
        return Promise.reject(error);
    }
);

// 响应拦截器
service.interceptors.response.use(
    response => {
        console.log("request信息", response);
        const res = response.data;
        console.log("request信息", res);
        // 如果返回的状态码不是200，说明接口请求有误
        if (res.code !== 200) {
            ElMessage.error(res.message || '请求失败');
            return Promise.reject(new Error(res.message || '请求失败'));
        }
        return res;
    },
    error => {
        console.error('响应错误:', error);
        if (error.response) {
            switch (error.response.status) {
                case 401:
                    ElMessage.error('未授权，请重新登录');
                    // 清除token并跳转到登录页
                    localStorage.removeItem('root_token');
                    window.location.href = '/login';
                    break;
                case 403:
                    ElMessage.error('拒绝访问');
                    break;
                case 404:
                    ElMessage.error('请求的资源不存在');
                    break;
                case 500:
                    ElMessage.error('服务器错误');
                    break;
                default:
                    ElMessage.error(`请求失败: ${error.response.status}`);
            }
        } else if (error.request) {
            ElMessage.error('服务器未响应，请检查后端服务是否启动');
        } else {
            ElMessage.error('请求配置错误: ' + error.message);
        }
        return Promise.reject(error);
    }
);

export default service;